#pragma once

#include "bcs/BoundaryCondition.h"
struct WallBC
{
	using ValueType = vtkm::Vec<FloatDefault, 5>;
	ValueType Execute(const ValueType& ul, const Vec3f& normal)
	{
		ValueType ur;
		FloatDefault vn = ul[1] * normal[0] + ul[2] * normal[1] + ul[3] * normal[2];
		ur[0] = ul[0];
		ur[1] = ul[1] - 2 * vn * normal[0];
		ur[2] = ul[2] - 2 * vn * normal[1];
		ur[3] = ul[3] - 2 * vn * normal[2];
		ur[4] = ul[4];

		return ur;
	}
};